package leetcode.字符串;

/**
 * 外观数列
 * TODO 解答失败
 */
public class Test38外观数列 {

    public static void main(String[] args) {
        System.out.println(countAndSay(5));
    }

    public static String countAndSay(int n) {
        if (n == 1) {
            return "1";
        }
        char[] ch = "11".toCharArray();
        while (n != 2) {
            StringBuilder builder = new StringBuilder();
            int counter = 1;
            for (int i = 1; i < ch.length; i++) {
                if (ch[i - 1] == ch[i]) {
                    counter++;
                } else {
                    // 例如 112 中，2不等于1，但是当前的i指向2，所以要appendi-1
                    builder.append(counter).append(ch[i - 1]);
                    counter = 1;
                }
                // 防止出现 i 遍历到数组最后就退出for循环了，导致builder没有append，在退出之前append一下
                if (i == ch.length - 1) {
                    // 例如11的情况，退出之前，counter计数的就是当前i指向的数字的个数，要append i
                    builder.append(counter).append(ch[i]);
                }
            }
            ch = builder.toString().toCharArray();
            n--;
        }
        return String.valueOf(ch);
    }
}
